package misp_backend.config;

import lombok.Data;

import java.util.HashMap;
import java.util.Map;
@Data
public class AjaxResult {
    private Integer code;   // 状态码（如200=成功，500=失败）
    private String msg;     // 提示信息
    private Object data;    // 响应数据（任意类型）

    // 常用状态码常量
    public static final int SUCCESS_CODE = 200;
    public static final int ERROR_CODE = 500;

    /**
     * 链式方法：设置状态码
     */
    public AjaxResult code(Integer code) {
        this.code = code;
        return this;
    }

    /**
     * 链式方法：设置消息
     */
    public AjaxResult msg(String msg) {
        this.msg = msg;
        return this;
    }

    /**
     * 链式方法：设置数据
     */
    public AjaxResult data(Object data) {
        this.data = data;
        return this;
    }

    // ---------- 静态工厂方法 ----------
    public static AjaxResult success() {
        return new AjaxResult()
                .code(SUCCESS_CODE)
                .msg("操作成功");
    }

    public static AjaxResult success(Object data) {
        return new AjaxResult()
                .code(SUCCESS_CODE)
                .msg("操作成功")
                .data(data);
    }

    public static AjaxResult error() {
        return new AjaxResult()
                .code(ERROR_CODE)
                .msg("系统异常");
    }

    public static AjaxResult error(String msg) {
        return new AjaxResult()
                .code(ERROR_CODE)
                .msg(msg);
    }

    /**
     * 快速构建分页数据（可直接作为data使用）
     */
    public static Map<String, Object> buildPage(Object items, long total) {
        Map<String, Object> pageData = new HashMap<>(2);
        pageData.put("list", items);
        pageData.put("total", total);
        return pageData;
    }
}
